package cz.cvut.fel.y36pda.hs.masekji4.blanka.screens.enter;

import cz.cvut.fel.y36pda.hs.masekji4.blanka.setting.MD5;
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Font;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.Manager;
import net.rim.device.api.ui.container.MainScreen;

/**
 * Třída <code>EnterScreen</code> reprezentuje obrazovku pro zadávání
 * přístupového kódu.
 *
 * @author masekji4@fel.cvut.cz
 */
public class EnterScreen extends MainScreen {
    private Bitmap codeEntry = Bitmap.getBitmapResource("code-entry.png");
    private Bitmap comfirm   = Bitmap.getBitmapResource("confirm.png");
    private Bitmap delete    = Bitmap.getBitmapResource("delete.png");
    private Bitmap cancel    = Bitmap.getBitmapResource("cancel.png");

    private String code     = "";

    /**
     * Vytvoří instanci třídy <code>EnterScreen</code>.
     */
    public EnterScreen() {
        super(Manager.NO_VERTICAL_SCROLLBAR | Manager.NO_VERTICAL_SCROLL);

        addKeyListener(new EnterScreenListener(this));
    }

    /**
     * Vrátí uživatelem zadaný přístupový kód.
     * 
     * @return uživatelem zadaný přístupový kód
     */
    public String getCode() {
        return code;
    }

    /**
     * Nastaví uživatelem zadaný přístupový kód.
     *
     * @param code uživatelem zadaný přístupový kód
     */
    private void setCode(String code) {
        this.code = code;
    }

    /**
     * Přidá do uživatelem zadaného přístupového kódu číslici.
     *
     * @param digit číslice
     */
    public void addDigit(int digit) {
        if (code.length() < 4) {
            code += digit;
        }
    }

    /**
     * Smaže poslední z přístupového kódu poslední zadanou číslici.
     */
    public void removeDigit() {
        if (getCode().length() > 0) {
            setCode(getCode().substring(0, getCode().length() - 1));
        }
    }

    /**
     * Vykreslí na display telefonu obsah obrazovky.
     *
     * @param graphics objekt třídy <code>Graphics</code>
     */
    protected void paint(Graphics graphics) {
        graphics.setColor(0x0000647d);
        graphics.drawRect(0, 0, 320, 240);
        graphics.fillRect(0, 0, 320, 240);
        graphics.drawBitmap(0, 0, 320, 320, codeEntry, 0, 0);
        graphics.drawBitmap(0, 0, 320, 320, comfirm, 0, 0);
        graphics.drawBitmap(0, 0, 320, 320, delete, 0, 0);

        if (getCode().length() == 0) {
            graphics.drawBitmap(0, 0, 320, 320, cancel, 0, 0);
        }

        graphics.setColor(0x00000000);
        graphics.setFont(getFont().derive(Font.BOLD, 42));
        graphics.drawText(code, 18, 82);
    }
}